﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ViewMaker.Core.Controls
{
    /// <summary>
    /// リストボックスViewコントロール
    /// </summary>
    public class ListBoxViewControl : ListViewControl
    {
        /// <summary>
        /// コンストラクタ
        /// </summary>
        public ListBoxViewControl()
        {
            ControlType = ViewControlType.ListBox;
        }
        /// <summary>
        /// Xamlを生成する
        /// </summary>
        /// <param name="parent"></param>
        /// <returns></returns>
        public override List<XamlNode> CreateXaml(XamlNode parent)
        {
            var list = base.CreateXaml(parent);
            var node = parent.CreateElement("ListBox");
            SetBindingAttribute(node, "ItemsSource", ItemsSource, true);
            BindSelectedItem(node);
            if (ItemsList.Count > 0)
            {
                var items = node.AddElement("ListBox.Items");   //ListBoxItemを利用する方法ではバインド先がListBoxItemになるためNG
                foreach (var listItem in Items)
                {
                    var ele = items.CreateElement("system", "clr-namespace:System;assembly=mscorlib", "String");
                    items.AppendChild(ele).InnerText = listItem;
                }
            }
            if (!string.IsNullOrEmpty(SelectionChangedCommand)) AddBehavior(node, "SelectionChangedBehavior", SelectionChangedCommand);
            ApplyBaseProperty(node);
            list.Add(node);
            return list;
        }
    }
}
